From 361ac64f309d94a66af21371a585d4f75cd9aa91 Mon Sep 17 00:00:00 2001 From: "iap10@labyrinth.cl.cam.ac.uk" Date: Tue, 8 Feb 2005 03:10:00 +0000 Subject: [PATCH] bitkeeper revision 1.1159.212.124 (42082d88aeY4pFTDqfgHMrvhse0-PA) Fix to memory debugging audit code. Signed-off-by: ian@xensource.com --- xen/arch/x86/memory.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/xen/arch/x86/memory.c b/xen/arch/x86/memory.c index 6575f160c7..e9fa4b370e 100644 --- a/xen/arch/x86/memory.c +++ b/xen/arch/x86/memory.c @@ -2313,7 +2313,6 @@ void audit_domain(struct domain *d) } /* PHASE 3 */ - list_ent = d->page_list.next; for ( i = 0; (list_ent != &d->page_list); i++ ) { @@ -2334,7 +2333,12 @@ void audit_domain(struct domain *d) if ( pt[i] & _PAGE_PRESENT ) { unsigned long l1pfn = pt[i]>>PAGE_SHIFT; - struct pfn_info *l1page = &frame_table[l1pfn]; + struct pfn_info *l1page; + + if (l1pfn>max_page) + continue; + + l1page = &frame_table[l1pfn]; if ( page_get_owner(l1page) == d ) adjust(l1page, 1, 1); @@ -2355,7 +2359,12 @@ void audit_domain(struct domain *d) if ( pt[i] & _PAGE_PRESENT ) { unsigned long l1pfn = pt[i]>>PAGE_SHIFT; - struct pfn_info *l1page = &frame_table[l1pfn]; + struct pfn_info *l1page; + + if (l1pfn>max_page) + continue; + + l1page = &frame_table[l1pfn]; if ( (page_get_owner(l1page) != d) || (l1pfn < 0x100) || (l1pfn > max_page) ) -- 2.30.2